# Author: Stephen Situ
# In This exercise, I connect to an IBM DB2 cloud database and use SQL alchemy to preform advanced sql queries. This includes:
# Aggragate Functions, LIMIT, DISTINCT, LIKE, ORDER BY, GROUP BY, GROUPING SETS, HAVING, PARTITION BY, CASE, CREATE TABLE,
# ALTER TABLE, INSERT INTO, UPDATE, DROP TABLE, Subqueries, VIEW, WITH CTE, TEMP TABLE, STORED PROCEDURES, JOINS, UNION.
import ibm_db
import ibm_db_sa
import sqlalchemy
%load_ext sql
%sql ibm_db_sa://gmv60736:vBlsVJ3UzuclM6c1@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL
# Return full Census table
%%sql
SELECT *
FROM CENSUS
LIMIT 10
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
community_area_number | community_area_name | percent_of_housing_crowded | percent_households_below_poverty | percent_aged_16__unemployed | percent_aged_25__without_high_school_diploma | percent_aged_under_18_or_over_64 | per_capita_income | hardship_index |
---|---|---|---|---|---|---|---|---|
1 | Rogers Park | 7.7 | 23.6 | 8.7 | 18.2 | 27.5 | 23939 | 39 |
2 | West Ridge | 7.8 | 17.2 | 8.8 | 20.8 | 38.5 | 23040 | 46 |
3 | Uptown | 3.8 | 24.0 | 8.9 | 11.8 | 22.2 | 35787 | 20 |
4 | Lincoln Square | 3.4 | 10.9 | 8.2 | 13.4 | 25.5 | 37524 | 17 |
5 | North Center | 0.3 | 7.5 | 5.2 | 4.5 | 26.2 | 57123 | 6 |
6 | Lake View | 1.1 | 11.4 | 4.7 | 2.6 | 17.0 | 60058 | 5 |
7 | Lincoln Park | 0.8 | 12.3 | 5.1 | 3.6 | 21.5 | 71551 | 2 |
8 | Near North Side | 1.9 | 12.9 | 7.0 | 2.5 | 22.6 | 88669 | 1 |
9 | Edison Park | 1.1 | 3.3 | 6.5 | 7.4 | 35.3 | 40959 | 8 |
10 | Norwood Park | 2.0 | 5.4 | 9.0 | 11.5 | 39.5 | 32875 | 21 |
# AGGRAGATE FUNCTIONS - AVG, COUNT, MAX, MIN return single value based on column values
%%sql
SELECT AVG(per_capita_income) AS avg_income
FROM CENSUS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
avg_income |
---|
25597 |
# LIMIT- limits result output
%%sql
SELECT *
FROM CENSUS
LIMIT 3
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
community_area_number | community_area_name | percent_of_housing_crowded | percent_households_below_poverty | percent_aged_16__unemployed | percent_aged_25__without_high_school_diploma | percent_aged_under_18_or_over_64 | per_capita_income | hardship_index |
---|---|---|---|---|---|---|---|---|
1 | Rogers Park | 7.7 | 23.6 | 8.7 | 18.2 | 27.5 | 23939 | 39 |
2 | West Ridge | 7.8 | 17.2 | 8.8 | 20.8 | 38.5 | 23040 | 46 |
3 | Uptown | 3.8 | 24.0 | 8.9 | 11.8 | 22.2 | 35787 | 20 |
# DISTINCT - returns only unique values of a column
%%sql
SELECT DISTINCT community_area_name
FROM CENSUS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
community_area_name |
---|
Albany Park |
Archer Heights |
Armour Square |
Ashburn |
Auburn Gresham |
Austin |
Avalon Park |
Avondale |
Belmont Cragin |
Beverly |
Bridgeport |
Brighton Park |
Burnside |
CHICAGO |
Calumet Heights |
Chatham |
Chicago Lawn |
Clearing |
Douglas |
Dunning |
East Garfield Park |
East Side |
Edgewater |
Edison Park |
Englewood |
Forest Glen |
Fuller Park |
Gage Park |
Garfield Ridge |
Grand Boulevard |
Greater Grand Crossing |
Hegewisch |
Hermosa |
Humboldt park |
Hyde Park |
Irving Park |
Jefferson Park |
Kenwood |
Lake View |
Lincoln Park |
Lincoln Square |
Logan Square |
Loop |
Lower West Side |
McKinley Park |
Montclaire |
Morgan Park |
Mount Greenwood |
Near North Side |
Near South Side |
Near West Side |
New City |
North Center |
North Lawndale |
North Park |
Norwood Park |
O'Hare |
Oakland |
Portage Park |
Pullman |
Riverdale |
Rogers Park |
Roseland |
South Chicago |
South Deering |
South Lawndale |
South Shore |
Uptown |
Washington Height |
Washington Park |
West Elsdon |
West Englewood |
West Garfield Park |
West Lawn |
West Pullman |
West Ridge |
West Town |
Woodlawn |
# Count Distinct values for column
%%sql
SELECT COUNT(DISTINCT community_area_name)
FROM CENSUS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
1 |
---|
78 |
# Use LiKE command to filter strings
%%sql
SELECT community_area_name
FROM CENSUS
WHERE community_area_name LIKE 'Burn%';
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
community_area_name |
---|
Burnside |
# Use ORDER BY clause to sort
%%sql
SELECT per_capita_income
FROM CENSUS
ORDER BY per_capita_income DESC
LIMIT 5
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
per_capita_income |
---|
88669 |
71551 |
65526 |
60058 |
59077 |
# Use GROUP BY clause to group a column with aggragate functions
%%sql
SELECT community_area_name, AVG(per_capita_income) AS avg_income
FROM CENSUS
GROUP BY community_area_name
LIMIT 10
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
community_area_name | avg_income |
---|---|
Albany Park | 21323 |
Archer Heights | 16134 |
Armour Square | 16148 |
Ashburn | 23482 |
Auburn Gresham | 15528 |
Austin | 15957 |
Avalon Park | 24454 |
Avondale | 20039 |
Belmont Cragin | 15461 |
Beverly | 39523 |
# GROUPING SETS, can preform multiple group bys without a UNION
%%sql
SELECT community_area_name, community_area_number, AVG(per_capita_income) AS average_income
FROM CENSUS
GROUP BY
GROUPING SETS (
community_area_name,community_area_number);
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
community_area_name | community_area_number | average_income |
---|---|---|
None | 1 | 23939 |
None | 2 | 23040 |
None | 3 | 35787 |
None | 4 | 37524 |
None | 5 | 57123 |
None | 6 | 60058 |
None | 7 | 71551 |
None | 8 | 88669 |
None | 9 | 40959 |
None | 10 | 32875 |
None | 11 | 27751 |
None | 12 | 44164 |
None | 13 | 26576 |
None | 14 | 21323 |
None | 15 | 24336 |
None | 16 | 27249 |
None | 17 | 26282 |
None | 18 | 22014 |
None | 19 | 15461 |
None | 20 | 15089 |
None | 21 | 20039 |
None | 22 | 31908 |
None | 23 | 13781 |
None | 24 | 43198 |
None | 25 | 15957 |
None | 26 | 10934 |
None | 27 | 12961 |
None | 28 | 44689 |
None | 29 | 12034 |
None | 30 | 10402 |
None | 31 | 16444 |
None | 32 | 65526 |
None | 33 | 59077 |
None | 34 | 16148 |
None | 35 | 23791 |
None | 36 | 19252 |
None | 37 | 10432 |
None | 38 | 23472 |
None | 39 | 35911 |
None | 40 | 13785 |
None | 41 | 39056 |
None | 42 | 18672 |
None | 43 | 19398 |
None | 44 | 18881 |
None | 45 | 24454 |
None | 46 | 16579 |
None | 47 | 12515 |
None | 48 | 28887 |
None | 49 | 17949 |
None | 50 | 20588 |
None | 51 | 14685 |
None | 52 | 17104 |
None | 53 | 16563 |
None | 54 | 8201 |
None | 55 | 22677 |
None | 56 | 26353 |
None | 57 | 16134 |
None | 58 | 13089 |
None | 59 | 16954 |
None | 60 | 22694 |
None | 61 | 12765 |
None | 62 | 15754 |
None | 63 | 12171 |
None | 64 | 25113 |
None | 65 | 16907 |
None | 66 | 13231 |
None | 67 | 11317 |
None | 68 | 11888 |
None | 69 | 17285 |
None | 70 | 23482 |
None | 71 | 15528 |
None | 72 | 39523 |
None | 73 | 19713 |
None | 74 | 34381 |
None | 75 | 27149 |
None | 76 | 25828 |
None | 77 | 33385 |
None | None | 28202 |
Albany Park | None | 21323 |
Archer Heights | None | 16134 |
Armour Square | None | 16148 |
Ashburn | None | 23482 |
Auburn Gresham | None | 15528 |
Austin | None | 15957 |
Avalon Park | None | 24454 |
Avondale | None | 20039 |
Belmont Cragin | None | 15461 |
Beverly | None | 39523 |
Bridgeport | None | 22694 |
Brighton Park | None | 13089 |
Burnside | None | 12515 |
CHICAGO | None | 28202 |
Calumet Heights | None | 28887 |
Chatham | None | 18881 |
Chicago Lawn | None | 13231 |
Clearing | None | 25113 |
Douglas | None | 23791 |
Dunning | None | 26282 |
East Garfield Park | None | 12961 |
East Side | None | 17104 |
Edgewater | None | 33385 |
Edison Park | None | 40959 |
Englewood | None | 11888 |
Forest Glen | None | 44164 |
Fuller Park | None | 10432 |
Gage Park | None | 12171 |
Garfield Ridge | None | 26353 |
Grand Boulevard | None | 23472 |
Greater Grand Crossing | None | 17285 |
Hegewisch | None | 22677 |
Hermosa | None | 15089 |
Humboldt park | None | 13781 |
Hyde Park | None | 39056 |
Irving Park | None | 27249 |
Jefferson Park | None | 27751 |
Kenwood | None | 35911 |
Lake View | None | 60058 |
Lincoln Park | None | 71551 |
Lincoln Square | None | 37524 |
Logan Square | None | 31908 |
Loop | None | 65526 |
Lower West Side | None | 16444 |
McKinley Park | None | 16954 |
Montclaire | None | 22014 |
Morgan Park | None | 27149 |
Mount Greenwood | None | 34381 |
Near North Side | None | 88669 |
Near South Side | None | 59077 |
Near West Side | None | 44689 |
New City | None | 12765 |
North Center | None | 57123 |
North Lawndale | None | 12034 |
North Park | None | 26576 |
Norwood Park | None | 32875 |
O'Hare | None | 25828 |
Oakland | None | 19252 |
Portage Park | None | 24336 |
Pullman | None | 20588 |
Riverdale | None | 8201 |
Rogers Park | None | 23939 |
Roseland | None | 17949 |
South Chicago | None | 16579 |
South Deering | None | 14685 |
South Lawndale | None | 10402 |
South Shore | None | 19398 |
Uptown | None | 35787 |
Washington Height | None | 19713 |
Washington Park | None | 13785 |
West Elsdon | None | 15754 |
West Englewood | None | 11317 |
West Garfield Park | None | 10934 |
West Lawn | None | 16907 |
West Pullman | None | 16563 |
West Ridge | None | 23040 |
West Town | None | 43198 |
Woodlawn | None | 18672 |
# Add HAVING clause to filter group by statements
%%sql
SELECT community_area_name, AVG(per_capita_income) AS avg_income
FROM CENSUS
GROUP BY community_area_name
HAVING AVG(per_capita_income) > 20000
LIMIT 10
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
community_area_name | avg_income |
---|---|
Albany Park | 21323 |
Ashburn | 23482 |
Avalon Park | 24454 |
Avondale | 20039 |
Beverly | 39523 |
Bridgeport | 22694 |
CHICAGO | 28202 |
Calumet Heights | 28887 |
Clearing | 25113 |
Douglas | 23791 |
# PARTITION BY can let us aggregate without using GROUP BY statement
%%sql
SELECT community_area_name, AVG(per_capita_income) OVER (PARTITION BY per_capita_income) AS average_income
FROM CENSUS
LIMIT 10
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
community_area_name | average_income |
---|---|
Riverdale | 8201 |
South Lawndale | 10402 |
Fuller Park | 10432 |
West Garfield Park | 10934 |
West Englewood | 11317 |
Englewood | 11888 |
North Lawndale | 12034 |
Gage Park | 12171 |
Burnside | 12515 |
New City | 12765 |
# Using CASE statement can create new column to categorize
%%sql
SELECT community_area_name, per_capita_income,
CASE
WHEN per_capita_income > 30000 and per_capita_income < 50000 THEN 'Mid Income'
WHEN per_capita_income > 50000 THEN 'High Income'
ELSE 'Low Income'
END AS income_bracket
FROM CENSUS
LIMIT 10;
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
community_area_name | per_capita_income | income_bracket |
---|---|---|
Rogers Park | 23939 | Low Income |
West Ridge | 23040 | Low Income |
Uptown | 35787 | Mid Income |
Lincoln Square | 37524 | Mid Income |
North Center | 57123 | High Income |
Lake View | 60058 | High Income |
Lincoln Park | 71551 | High Income |
Near North Side | 88669 | High Income |
Edison Park | 40959 | Mid Income |
Norwood Park | 32875 | Mid Income |
# Create Table CATS with defined schema
%%sql
CREATE TABLE CATS(
ID INT NOT NULL,
COLOUR VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
PRIMARY KEY (ID)
);
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
[]
%%sql
SELECT *
FROM CATS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
id | colour | age |
---|
%%sql
INSERT INTO CATS(id,colour,age)
VALUES (12,'RED',10),
(13,'BLUE',14),
(24,'ORANGE',57),
(50,'YELLOW',48);
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL 4 rows affected.
[]
%%sql
SELECT *
FROM CATS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
id | colour | age |
---|---|---|
12 | RED | 10 |
13 | BLUE | 14 |
24 | ORANGE | 57 |
50 | YELLOW | 48 |
%%sql
UPDATE CATS
SET colour='CYAN'
WHERE age=10;
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL 1 rows affected.
[]
%%sql
SELECT *
FROM CATS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
id | colour | age |
---|---|---|
12 | CYAN | 10 |
13 | BLUE | 14 |
24 | ORANGE | 57 |
50 | YELLOW | 48 |
# ALTER TABLE Commands - ADD COLUMN, DROP COLUMN, RENAME COLUMN, ALTER COLUMN
# ALTER TABLE - ADD COLUMN
%%sql
ALTER TABLE CATS
ADD COLUMN Year INT;
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
[]
%%sql
SELECT *
FROM CATS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
id | colour | age | YEAR |
---|---|---|---|
12 | CYAN | 10 | None |
13 | BLUE | 14 | None |
24 | ORANGE | 57 | None |
50 | YELLOW | 48 | None |
# ALTER TABLE - RENAME COLUMN
%%sql
ALTER TABLE CATS
RENAME COLUMN YEAR TO
year_born;
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
[]
%%sql
SELECT *
FROM CATS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
id | colour | age | year_born |
---|---|---|---|
12 | CYAN | 10 | None |
13 | BLUE | 14 | None |
24 | ORANGE | 57 | None |
50 | YELLOW | 48 | None |
#ALTER TABLE - ALTER COLUMN
%%sql
ALTER TABLE CATS
ALTER COLUMN year_born
SET DATA TYPE varchar(10);
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
[]
#ALTER TABLE - DROP COLUMN
%%sql
ALTER TABLE CATS
DROP COLUMN year_born
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
[]
%%sql
SELECT *
FROM CATS
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
id | colour | age |
---|---|---|
12 | CYAN | 10 |
13 | BLUE | 14 |
24 | ORANGE | 57 |
50 | YELLOW | 48 |
# DROP TABLE can delete the cats table
%%sql
DROP TABLE CATS;
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
[]
# SUBQUERIES - subquery in FROM clause gives resultant table to query off of
%%sql
SELECT *
FROM (
SELECT *
FROM CENSUS
WHERE per_capita_income >= 50000)
LIMIT 10
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
community_area_number | community_area_name | percent_of_housing_crowded | percent_households_below_poverty | percent_aged_16__unemployed | percent_aged_25__without_high_school_diploma | percent_aged_under_18_or_over_64 | per_capita_income | hardship_index |
---|---|---|---|---|---|---|---|---|
5 | North Center | 0.3 | 7.5 | 5.2 | 4.5 | 26.2 | 57123 | 6 |
6 | Lake View | 1.1 | 11.4 | 4.7 | 2.6 | 17.0 | 60058 | 5 |
7 | Lincoln Park | 0.8 | 12.3 | 5.1 | 3.6 | 21.5 | 71551 | 2 |
8 | Near North Side | 1.9 | 12.9 | 7.0 | 2.5 | 22.6 | 88669 | 1 |
32 | Loop | 1.5 | 14.7 | 5.7 | 3.1 | 13.5 | 65526 | 3 |
33 | Near South Side | 1.3 | 13.8 | 4.9 | 7.4 | 21.8 | 59077 | 7 |
# SUBQUERIES - subquery in where clause gives value to compare to off a aggregate function
%%sql
SELECT *
FROM CENSUS
WHERE per_capita_income > (
SELECT avg(per_capita_income)
FROM CENSUS
)
LIMIT 10
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
community_area_number | community_area_name | percent_of_housing_crowded | percent_households_below_poverty | percent_aged_16__unemployed | percent_aged_25__without_high_school_diploma | percent_aged_under_18_or_over_64 | per_capita_income | hardship_index |
---|---|---|---|---|---|---|---|---|
3 | Uptown | 3.8 | 24.0 | 8.9 | 11.8 | 22.2 | 35787 | 20 |
4 | Lincoln Square | 3.4 | 10.9 | 8.2 | 13.4 | 25.5 | 37524 | 17 |
5 | North Center | 0.3 | 7.5 | 5.2 | 4.5 | 26.2 | 57123 | 6 |
6 | Lake View | 1.1 | 11.4 | 4.7 | 2.6 | 17.0 | 60058 | 5 |
7 | Lincoln Park | 0.8 | 12.3 | 5.1 | 3.6 | 21.5 | 71551 | 2 |
8 | Near North Side | 1.9 | 12.9 | 7.0 | 2.5 | 22.6 | 88669 | 1 |
9 | Edison Park | 1.1 | 3.3 | 6.5 | 7.4 | 35.3 | 40959 | 8 |
10 | Norwood Park | 2.0 | 5.4 | 9.0 | 11.5 | 39.5 | 32875 | 21 |
11 | Jefferson Park | 2.7 | 8.6 | 12.4 | 13.4 | 35.5 | 27751 | 25 |
12 | Forest Glen | 1.1 | 7.5 | 6.8 | 4.9 | 40.5 | 44164 | 11 |
# VIEWS can create a tempoary view that can be queried from
%%sql
CREATE VIEW area_uptown AS
SELECT community_area_name, per_capita_income
FROM CENSUS
WHERE community_area_name = 'Uptown';
%%sql
select * FROM area_uptown
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
community_area_name | per_capita_income |
---|---|
Uptown | 35787 |
# COMMON TABLE EXPRESSION create a temporary table and a SELECT STATEMENT must be followed immediately after to query off of
%%sql
WITH CENSUS_CTE (area_name, Income) AS (
SELECT community_area_name, per_capita_income
FROM CENSUS
WHERE community_area_name = 'North Center')
select area_name, Income
FROM CENSUS_CTE
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
area_name | income |
---|---|
North Center | 57123 |
# TEMP TABLES create a temporary table to query off of. Can Use INSERT INTO statement to put values inside temp table
%%sql
CREATE TABLE #temp_census (
ID int,
Jobtitle varchar (50),
Salary int
)
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
[]
%%sql
SELECT *
FROM #temp_census
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done.
id | jobtitle | salary |
---|
# STORED PROCEDURES are like functions that can be called
%%sql
CREATE PROCEDURE RETRIEVE_ALL
LANGUAGE SQL
READS SQL DATA
DYNAMIC RESULT SETS 1
BEGIN
DECLARE C1 CURSOR
WITH RETURN FOR
SELECT * FROM CENSUS;
OPEN C1;
END
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL (ibm_db_dbi.ProgrammingError) ibm_db_dbi::ProgrammingError: Statement Execute Failed: [IBM][CLI Driver][DB2/LINUXX8664] SQL0454N The signature provided in the definition for routine "GMV60736.RETRIEVE_ALL" matches the signature of some other routine. LINE NUMBER=10. SQLSTATE=42723\r SQLCODE=-454 [SQL: CREATE PROCEDURE RETRIEVE_ALL LANGUAGE SQL READS SQL DATA DYNAMIC RESULT SETS 1 BEGIN DECLARE C1 CURSOR WITH RETURN FOR SELECT * FROM CENSUS; OPEN C1; END] (Background on this error at: http://sqlalche.me/e/f405)
%%sql
CALL RETRIEVE_ALL
* ibm_db_sa://gmv60736:***@m98538591-7217-4024-b027-8baa776ffad1.c3n41cmd0nqnrk39u98g.databases.appdomain.cloud:30875/bludb;security=SSL Done. (ibm_db_dbi.ProgrammingError) ibm_db_dbi::ProgrammingError: The last call to execute did not produce any result set. (Background on this error at: http://sqlalche.me/e/f405)
# JOINS - 4 Major Joins. Uses Primary Key from one table and a foreign key from another table to join.
# (INNER) JOIN
# LEFT (OUTER) JOIN
# RIGHT (OUTER) JOIN
# FULL (OUTER) JOIN
# UNIONS - adds rows from one table to another using UNION (distinct) or UNION ALL statement (all)